package ua.diploma.core;

/**
 * Общеиспользуемые константы
 * 
 * @author netstalk3r
 * 
 */

public class Constants {

	// чтобы нельзя было создать экземпляр класса
	private Constants() {
	}

	/**
	 * название параметра реквеста в котором передается экшен который надо
	 * вызвать для контроллера
	 */
	public static final String ACTION_PARAM = "action";

	/**
	 * название аттрибута реквеста в котором слой контроллеров передает
	 * сообщение об ошибке на слой представления
	 */
	public static final String ERROR_MESSAGE_ATTRIBUTE = "errorMessage";

	/**
	 * имя под которым юзер бин хранится в сессии
	 */
	public static final String USER_BEAN_ATTRIBUTE = "userBean";

	// Вью страницы входа
	public static final String LOGIN_VIEW = "/WEB-INF/views/login/login.jsp";
	// Вью страницы чата
	public static final String CHAT_VIEW = "/WEB-INF/views/chat/chat.jsp";
	// Вью страницы ошибок
	public static final String ERROR_VIEW = "/WEB-INF/views/error/error.jsp";
	// Вью страницы формирования JSON'a для авторизации
	public static final String VALID_JSON_LOGIN_VIEW = "/WEB-INF/views/jsonValidation/validJSONLogin.jsp";
	//Вью страницы формирования JSON'a для регистрации
	public static final String VALID_JSON_REGISTRATION_VIEW = "/WEB-INF/views/jsonValidation/validJSONRegistration.jsp";
	//Вью страницы формирования JSON'a для секретных вопросов 
	public static final String VALID_JSON_QUESTIONS_VIEW = "/WEB-INF/views/jsonValidation/validJSONQuestions.jsp";

	// имена контроллеров
	public static final String LOGIN_CONTROLLER = "login";
	public static final String REGISTRATION_CONTROLLER = "registration";
	public static final String INDEX_CONTROLLER = "index";
	public static final String ERROR_CONTEROOLER = "error";
	public static final String WHIPUP_CONTROLLER = "whipup";

	// //////////////////////////////////////////////////////////////////////////////
	// Костанты валидации
	// /////////////////////////////////////////////////////////////////////////////
	public static final Integer MIN_LOGIN_LENGHT = 3;
	public static final Integer MIN_PASS_LENGHT = 6;
	public static final String VALIDATION_ERROR_LOGIN_LENGTH = "Логин должен быть не меньше "
			+ Constants.MIN_LOGIN_LENGHT + " символов";
	public static final String VALIDATION_ERROR_PASSWORD_LENGTH = "Пароль должен быть не меньше "
			+ Constants.MIN_PASS_LENGHT + " символов";
	public static final String VALIDATION_ERROR_PASSWORD_CONFIRM = "Пароль подтвержден не правильно";

	// //////////////////////////////////////////////////////////////////////////////
	// Статусы пользователя
	// /////////////////////////////////////////////////////////////////////////////
	public enum AccoutStaus {
		REGISTERED(1), CONFIRMED(2);

		private final Integer value;

		AccoutStaus(Integer value) {
			this.value = value;
		}
		
		public Integer getValue() {
			return value;
		}
		
		public static AccoutStaus fromValue(Integer v) {
			for (AccoutStaus c : AccoutStaus.values()) {
				if (c.value.equals(v)) {
					return c;
				}
			}
			return null;
		}
	}

}